Fixed: If can’t add child, don’t add to child info
authorDaniel Boles <dboles@src.gnome.org>
Thu, 12 Oct 2017 13:05:09 +0000 (14:05 +0100)
committerDaniel Boles <dboles@src.gnome.org>
Fri, 13 Oct 2017 08:50:19 +0000 (09:50 +0100)
If the call to set_parent() failed, we were still adding the child to
the internal list of children, despite that it was not really added.
That meant we could later try to do invalid stuff with that non-child.

Fix that by asserting and giving up if the child that the user is
attempting to add is already parented.

https://bugzilla.gnome.org/show_bug.cgi?id=701296

gtk/gtkfixed.c

index bdb8e9570ffbbaf899084fc7f62ba95b6691116a..355929ecc72938438ed42f67841eff68707f54b7 100644 (file)
@@ -235,6 +235,7 @@ gtk_fixed_put (GtkFixed  *fixed,
 
   g_return_if_fail (GTK_IS_FIXED (fixed));
   g_return_if_fail (GTK_IS_WIDGET (widget));
+  g_return_if_fail (_gtk_widget_get_parent (widget) == NULL);
 
   priv = fixed->priv;